很棒,跟我自己的軟體開發價值觀幾乎完全吻合,但我就是畫不出這麼酷的圖!
謝謝 Steven Mak 的分享!
--
那個 tracer bullects development 就是曳光彈式開發。這邊補上我在一篇講重構的文章中提到的片段:
曳光彈開發方式(Tracer Bullet Development, TBD),這個開發方式,在軟體專案成功的管理之道《Ship it! A Practical Guide to Successful Software Projects》,以及程序員修煉之道:從小工到專家《The Pragmatic Programmer: From Journeyman to Master》這兩本書中都有提到,讀者也可以看一下原作者對 Tracer Bullets 的解釋:Tracer Bullets and Prototypes ,這個方式跟這整個 TDD 系列在撰寫 production code 時,有點不謀而合,建議讀者可以花時間去了解與實際演練一下。
TBD 簡單的說,就是用最快速的方式,建立出 working prototype ,透過 interface 與 stub object 來做出類似 hard-code 的系統,過程中有一個重點,就是職責分離,透過相依於 interface 來切分職責,並將實作細節獨立出來,接著再透過 stub / mock 來建立測試案例,最後再實作細節與重構,整個系統的發展就會沿著一開始使用曳光彈所劃過的軌跡前進。
換句話說,「用最小的 effort 驗證 the right thing。不同於一般的 prototyping ,如果是對的方向,你建立的雛形架構不會浪費,可以馬上從目前的雛形往下開發。」